import store from '@/store'

export default {
  inserted(el, binding, vnode) {
    // console.log('el==============>', el, binding, vnode, el.parentNode)
    const { value } = binding
    const permissionList = store.getters && store.getters.permissionList
    if (!value) return el.parentNode && el.parentNode.removeChild(el)
    const modelId = vnode.context._routerRoot._route.meta.modelId || ''

    if (!modelId) return el.parentNode && el.parentNode.removeChild(el)
    const list = permissionList.filter(o => o.modelId === modelId)

    if (!list.length) return el.parentNode && el.parentNode.removeChild(el)
    const btnList = list[0] && list[0].button ? list[0].button : []


    if (!btnList.length) {
      el.parentNode && el.parentNode.removeChild(el)
    } else {
      const hasPermission = btnList.some(btn => btn.enCode === value)


      if (!hasPermission) {

        // 创建一个注释元素
        if (el && binding && vnode) {
          const comment = document.createComment(' ');
          // 设置value值
          Object.defineProperty(comment, 'setAttribute', {
            value: () => undefined,
          });
          // 用注释节点替换 当前页面元素  
          vnode.elm = comment;
          // 下面作为初始化操作 赋值为空
          vnode.text = ' ';
          vnode.isComment = true;
          vnode.context = undefined;
          vnode.tag = undefined;
          vnode.data.directives = undefined;

          // 判断当前元素是否是组件  如果是组件的话也替换成 注释元素
          if (vnode.componentInstance) {
            vnode.componentInstance.$el = comment;
          }
          if (el.parentNode) {
            // 从 DOM 树中删除 node 节点，除非它已经被删除了。
            el.parentNode.replaceChild(comment, el);
          }


          // el.parentNode && el.parentNode.removeChild(el)
        }

      }
    }
  }
}